home *** CD-ROM | disk | FTP | other *** search
Wrap
software solutions by: Soft-SHARE (tm) by James P. Morgan 1749 AMERICANA BLVD, APT 23-G ORLANDO FLA, 32809 (305) 826-7297 ******************************************************************************* THIS IS A FIRST ATTEMPT TO CHECK OUT DOS 3.0 AND COMPARE KNOWN BUGS AND FIXES THAT WERE IN DOS 2.X ******************************************************************************* 1). COMSPEC DID NOT WORK. --------------------- HEY !!! THE 'COMSPEC' COMMAND NOW APPEARS TO WORK, FOR DOS 3.0. EXAMPLE : >SET COMSPEC=C:\COMMAND.COM THEN WHEN DOS NEEDS TO RELOAD COMMAND.COM IT WILL GO TO C:\ 2). TREE.COM HAD ROOT BUG - DOS 2.0 --------------------- ************************************************************************ THIS IS AN UPDATED VERSION FOR DOS 3.0 - THEY STILL DIDNT FIX THE BUG!! ************************************************************************ TREE WITH ROOT BUGS -------------------- HAVING A TALLGRASS 20 MEG HARD DISK WITH OVER 50 SUB-DIRECTORIES, I HAVE COME TO DEPEND ON THE DOS UTILITY TREE.COM TO HELP ME CONTROL THE SUB-DIRECTORYS. WELL, ONE DAY TO MY SURPRISE, I COULD NO LONGER LIST ANY SUB-DIRECTORYS PAST THE FIRST ROOT SUB-DIRECTORY, 'DATABASE.DIR'. "OH NO!, MY HARD DISK HAS PROBLEMS", I SAID. AFTER SOME CUSSING AND SWEATING AND SEVERAL LONG NITES AND DAYS, I HAD ISOLATED THE PROBLEM TO THE TREE.COM UTILITY PROGRAM. THE PROBLEM READS LIKE THIS: ------- 1). IF YOU HAVE A ROOT SUB-DIRECTORY ENTRY THAT IS ELEVEN (11) CHARACTERS LONG AND 2). YOU HAVE AT LEAST ONE (1) SUB-DIRECTORY WITHIN THE ROOT DIRECTORY TREE.COM STOPS LOOKING FOR ANY OTHER DIRECTORYS. THE SOULTION READS AS : -------- 1). DEBUG TREE.COM 2). E 3D4 0D 'FOR DOS 2.X ONLY 2). E 81A 0D 'FOR DOS 3.0 ONLY 3). W 4). Q NO MORE ROOT BUGS, SO NOW WE HAVE A HEALTHY TREE.COM AGAIN. AS AN ADDED BONUS, SHOULD BE WORTH A COUPLE OF MORE DOLLARS, THERE IS AN UNDOCUMENTED DOS FUNCTION CALL IN TREE.COM. THIS FUNCTION CALL DETERMINES THE DEFINED SYSTEM PATH SEPARATOR CHARACTER. THIS SEPARATOR MAY BE DEFINED AT BOOT TIME BY INCLUDING IN THE FILE 'CONFIG.SYS' THE FOLLOWING UNDOCUMENTED STATEMENT : SWITCHAR=X WHERE 'X' IS ANY CHARACTER ,(EXAMPLE : SWITCHAR=-) FOR YOU 'UNIX' USERS. YOU MAY ASK, HOW DO I DETERMINE WHAT THE SEPARATOR CHARACTER WAS THAT I DEFINED AT BOOT TIME, FROM AN APPLICATION PROGRAM. NOW THE BONUS. USING PARTIAL ASSEMBLER CODE AS AN EXAMPLE : XOR DX,DX MOV AX,3700 INT 21 MOV AL,DL GUESS WHATS IN REG. AL, RIGHT,THE DEFINED SEPARATOR CHARACTER. GOOD LUCK, BUT I WOULD LIKE TO HEAR FROM OTHER USERS THAT HAVE FOUND MORE UNDOCUMENTED FUNCTION CALLS. TREE.COM, FOR DOS 2.1, IS THE SAME AS DOS2.0. I HAVE REPORTED THE BUG AND FIX TO IBM. TREE.COM FOR DOS 3.0 IS A DIFFERENT SIZE. 3). FIX COMP.COM FOR MORE THAN 10 MISMATCHES ---------------------------------------- WHEN '10' IS NOT ENOUGH ------------------------- PROBABLY ONE OF THE MOST ANNOYING DOS 2.0AND 3.0 UTILITYS IS 'COMP.COM'. BY ANNOYING I MEAN THAT EVEN THOUGH IT WONT LET U COMPARE UNEQUAL LENGTH FILES, IT WILL STOP AFTER FINDING 10 UNEQUAL COMPARES. WELL MANY TIMES I MODIFY SYSTEM UTILITIES OR PATCH OTHER PROGRAMS OR FILES TO GET BETTER OR DIFFERENT RESULTS, AND MORE OFTEN THAN NOT , MORE THAN 10 BYTES GET CHANGED, AND AT A LATER DATE I MIGHT WANT TO COMPARE THE ORIGINAL WITH THE CHANGED, TO GET A LISTING OF THE DIFFERENCES. IM NOT GOING TO DO ANYTHING ABOUT THE UNEQUAL LENGTH SITUATION, BUT I WILL TELL YOU WHERE TO PATCH COMP.COM TO LET YOU SET YOUR OWN 'STOP AFTER UNEQUAL COMPARE' COUNT. 1) DEBUG COMP.COM ENTER -L *************** DOS 2.X ENTER -U CS:396 YOU SHOULD SEE : CMP BYTE PTR [07E9],0A ALSO THE INSTRUCTION PRIOR TO CS:396 IS THE INSTRUCTION THAT INCREMENTS (ADDS +1) TO [07E9]. ENTER -E CS:39A XX (WHERE XX IS THE NEW HEX COUNT LIMIT, INSTEAD OF 'OA') ALSO THE MESSAGE "10 Mismatches" IS AT CS:809, YOU MAY WANT TO CHANGE THE MESSAGE TO BETTER SUIT YOURSELF. ***************** ***************** DOS 3.0 ENTER -U CS:879 YOU SHOULD SEE : CMP BYTE PTR [0568],0A ALSO THE INSTRUCTION PRIOR TO CS:879 IS THE INSTRUCTION THAT INCREMENTS (ADDS +1) TO [0568]. ENTER -E CS:879 XX (WHERE XX IS THE NEW HEX COUNT LIMIT, INSTEAD OF 'OA') ALSO THE MESSAGE "10 Mismatches" IS AT CS:B51, YOU MAY WANT TO CHANGE THE MESSAGE TO BETTER SUIT YOURSELF. ****************** ENTER -W ENTER -Q 2) YOU SHOULD NOW HAVE A COPY OF COMP.COM THAT STOPS ONLY AFTER YOU WANT IT TO. **************************************************************************** NOTE: THE UNEQUAL COUNTER IS A BYTE, SO THE MAXIMUM NUMBER OF UNEQUAL COMPARES COULD NOT BE GREATER THAN 255. 4). DEBUG.COM PROBLEM WITH SEGMENT REGISTERS (IN DOS 2.X) ---------------------------------------- ********************************************************** NOTE !!!!!! NOTE !!!!!!!! NOTE !!!!!!!! NOTE !!!!!! DOS 3.0 DEBUG.COM SEEMS TO HAVE CORRECTED THIS PROBLEM ********************************************************* OH, DEM-BUGS, DEM-BUGS IN DEBUG --------------------------------- WE ALL KNOW THAT FLEAS HAVE FLEAS, DON'T WE. WELL NOW WE KNOW DEBUG HAS BUGS. I AM REFERRING TO THE DOS UTILITY 'DEBUG.COM' SUPPLIED ON THE DOS 2.X SUPPLEMENTAL PROGRAM DISK FOR IBM PC-DOS. THERE EXISTS A VERY SEVERE BUG IN DEBUG.COM. THE SYMPTOMS ARE NOT UNLIKE COLD SYMPTOMS, EACH PERSONS ARE A LITTLE DIFFERENT. WELL THIS 'BUG' EXHIBITS DIFFERENT SYMPTOMS THAT AT FIRST ARE HARD TO DIAGNOSE. THESE SYMPTOMS CAN BE CAUSE BY ENTERING ANYONE OF THE DEBUG.COM COMMANDS, SUCH AS 'D CS:100' AS 'D CS;100'. NOTICE THAT THE CHARACTER FOLLOWING THE SEGMENT REGISTER IS NOT A COLON BUT A SEMI-COLON. THIS CHARACTER DOES NOT HAVE TO BE A SEMI-COLON, IT COULD BE ANY CHARACTER INCLUDING A SPACE. IF YOU ENTER THE 'DUMP' COMMAND WITH THE SEMI-COLON YOUR MACHINE WILL EITHER SCREAM AT YOU AND/OR LOCK UP. IT WILL ALSO IN SOME CASES IMMEDIATELY RETURN TO PC-DOS WITHOUT SO MUCH AS A GOOD-BYE. TRY IT WITH DIFFERENT DEBUG COMMANDS AND DIFFERENT SEGMENT REGISTERS. YOU MAY OR MAY NOT BE AMUSED, I WASN'T. AFTER OVER ANY HOUR INTO TRACING A PROGRAM AND SINGLE STEPPING, I LIFTED MY FINGER OFF THE SHIFT KEY TO FAST AND THE ":" WAS ENTERED AS ";" AND MY PC WENT OFF INTO PC-LIMBO. AGAIN THE MOANS AND GROANS AND CUSSING, AS WAS WITH THE BUG THAT TURNED UP IN TREE.COM. BUT THATS ANOTHER BUG STORY. I WILL SAVE YOU A GREAT DEAL OF HEART ACHE AND GIVE YOU THE FIX FOR THE PROBLEM. FIRST DEBUG DEBUG.COM ENTER >DEBUG DEBUG.COM ENTER -U 5D6 YOU SHOULD SEE THE FOLLOWING CODE XXXX:5D6 D1E1 SHL CX,1 5D8 8BD9 MOV BX,CX 5DA FFB7F22A PUSH [BX+2AF2] 5DE 803C3A CMP BYTE PTR [SI],3A 'CHECK FOR ":" 5E1 75BD JNZ 05A0 5E3 EBD7 JMP 05BC THIS IS THE OFFENDING CODE, THE CODE TO FIX THE PROBLEM IS AS FOLLOWS : ENTER -E 5D6 80 3C 3A 75 C5 D1 E1 8B D9 FF B7 F2 2A XXXX:5D6 803C3A CMP BYTE PTR [SI],3A 'CHECK FOR ":" 5D9 75C5 JNZ 05A0 5DB D1E1 SHL CX,1 5DD 8BD9 MOV BX,CX 5DF FFB7F22A PUSH [BX+2AF2] 5E3 EBD7 JMP 05BC ENTER -W ENTER -Q YOU WILL BE RETURNED TO PC-DOS. AS ALWAYS YOU SHOULD BE WORKING FROM A BACKUP COPY OF DEBUG.COM.TO TEST OUT THE NEW DEBUG.COM, JUST EXECUTE DEBUG.COM AND TRY THE SAME TEST. HOPEFULLY YOU SHOULD SEE AN ERROR MESSAGE, '^ ERROR' DISPLAYED AT THE POINT IN THE COMMAND. FOR YOU UNENLIGHTENED, DEBUG.COM WAS PUSHING A WORD ONTO THE STACK EVEN IF THE CHECK FOR THE ":" (HEX 3A) WAS NOT SUCCESSFUL AND BRANCHING TO A ROUTINE THAT DID NOT CLEAR THE STACK OF THIS VALUE. SO WHEN A RETURN (RET) WAS EXECUTED ( WHICH POPS THE STACK FOR THE RETURN ADDRESS) THE WRONG RETURN POINT WAS ENTERED AND WHAT WOULD HAPPEN IS ANYONES GUESS. ALL THE FIX DOES IS CHECK FOR A ":" FIRST AND IF FOUND, THEN PUSHES THE STACK. THIS SHOULD SAVE YOU MIDNIGHT HACKERS A COUPLE OF EXTRA HOURS SLEEP, FROM HAVING TO RECOVER FROM A LOCKED UP MACHINE. ALSO IF YOU DON'T WANT TO USE THE SHIFT KEY TO GET THE COLON, CHANGE HEX 3A, SAY TO HEX 3B, A SEMI-COLON. A FURTHER NOTE. IT APPEARS THAT EVEN THOUGH PC-DOS 2.0 AND 2.1 DEBUG.COM ARE IDENTICAL CODE, MICROSOFT MS-DOS DEBUG.COM, ON THE COLUMBIA, ALREADY HAS THE FIX IN IT. MAYBE MICROSOFT WILL TELL IBM FOR THE NEXT RELEASE OF DOS, UNLESS IBM DOS X.X DOES NOT COME FROM MICROSOFT. 5). FORMATTING HARD DISK BY MISTAKE ------------------------------- THIS APPLIES THE BASIC SAME PATCH TO DOS 3.0 'FORMAT.COM' AS WAS DONE FOR DOS 2.1. THE PATCH REQUIRES A DRIVE SPECIFIER BE ENTERED WHEN FORMAT EXECUTED. 1). DEBUG FORMAT.COM -E CS:648 EB D5 90 90 -W -Q IF YOU ENTER 'FORMAT' ONLY YOU SHOULD GET 'INVALID DRIVE SPECIFICATION' ERROR MESSAGE NOW. 6). DOS EXTENDED FUNCTION CALL 'GET FIRST' BUG (DOS 2.X CALL) ------------------------------------------ DOS INT 21 FUNCTION CALL SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS